

#define FF(F, FT) void vm_ffi(VM* vm) { FT = pull;
#define PROC0(F) FF(F, void(*f)()) 
#define PROC1(F, T0, A0) FF(F, void(*f)(T0)) 
#define PROC2(F, T0, A0, T1, A1) FF(F, void(*f)(T0, T1))
#define PROC3(F, T0, A0, T1, A1, T2, A2) FF(F, void(*f)(T0, T1, T2))
#define FUNC0(F, R, RF) FF(F, R(*f)())
#define FUNC1(F, R, RF, T0, A0) FF(F, R(*f)(T0))
#define FUNC2(F, R, RF, T0, A0, T1, A1) FF(F, R(*f)(T0, T1))
#define FUNC3(F, R, RF, T0, A0, T1, A1, T2, A2) FF(F, R(*f)(T0, T1, T2))

